package sige

class AgendaFinanceiraController {

    def index() {
        redirect(action: "listas")
    }
    
    def listas(){
        def pagamentosFuturos = getPagamentosAbertos(new Date().clearTime(), new Date().clearTime())
        [sazonalidade: "Hoje", pagamentosFuturosList: pagamentosFuturos , pagamentosFuturosTotal: pagamentosFuturos?.size()]
    }
    
    def atualizar = {
        def pagamentosFuturos
        String sazonalidade = params.sazonalidade
        switch(sazonalidade){
            case "Esta Semana":
                Calendar c = Calendar.getInstance()
                c.time = new Date()
                c[Calendar.DAY_OF_WEEK] = c.getActualMaximum(Calendar.DAY_OF_WEEK)
                def finalDaSemana = c.time
                pagamentosFuturos = getPagamentosAbertos(new Date().clearTime(), finalDaSemana)
                break
            case "Este Mês":
                Calendar c = Calendar.getInstance()
                c.time = new Date()
                c[Calendar.DATE] = c.getActualMaximum(Calendar.DATE)
                def finalDaSemana = c.time
                pagamentosFuturos = getPagamentosAbertos(new Date().clearTime(), finalDaSemana)
                break
            default:
            println "entrou no dia"
                pagamentosFuturos = getPagamentosAbertos(new Date().clearTime(), new Date().clearTime())
                break
        }
        render (template: 'temp-listas', model:[sazonalidade: sazonalidade, 
            pagamentosFuturosList: pagamentosFuturos , 
            pagamentosFuturosTotal: pagamentosFuturos?.size()])
    }
    
    private List getPagamentosAbertos(Date dataInicio , Date dataLimite){
        println "inicio: $dataInicio, fim: $dataLimite"
        def results = Pagamento.withCriteria {
            and {
                between('dataDeVencimento', dataInicio, dataLimite)
                eq("pago", false)
                order('dataDePagamento', 'asc')
                movimentacao {
                    ordem{
                        eq("tipo", "Despesa")
                    } 
                    
                }
            }
            /*maxResults(params.max)
            firstResult(params.offset)*/
        }
        
        
            
    }
}
